﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;
using System.Data.SqlClient;
using System.Data;

namespace DataAcess
{
    public class AdministradorData
    {

        String literalDeConexion;
        SqlConnection conexion;

        public AdministradorData(String literalDeConexion)
        {
            this.literalDeConexion = literalDeConexion;
            this.conexion = new SqlConnection();
        }

        public Boolean verificaAdministrador(String usuario, String contrasenna)
        {

            Boolean bandera = false;
            this.conexion.ConnectionString = literalDeConexion;
            SqlCommand cmdVerificaAdm = new SqlCommand();
            cmdVerificaAdm.CommandText = "VerificaAdministrador";
            cmdVerificaAdm.Connection = conexion;
            cmdVerificaAdm.CommandType = CommandType.StoredProcedure;

            SqlParameterCollection parametros = cmdVerificaAdm.Parameters;
            parametros.Add(new SqlParameter("@usuario", usuario));
            parametros.Add(new SqlParameter("@contrasenna", contrasenna));
            SqlParameter valorRetornado = new SqlParameter();
            valorRetornado.Direction = ParameterDirection.ReturnValue;
            valorRetornado.DbType = DbType.Int32;
            valorRetornado.ParameterName = "@Valor_Retorno";
            parametros.Add(valorRetornado);

            conexion.Open();
            SqlTransaction transaccion = conexion.BeginTransaction();
            cmdVerificaAdm.Transaction = transaccion;
            try
            {
                cmdVerificaAdm.ExecuteNonQuery();
                int valorRetorno = Int32.Parse(cmdVerificaAdm.Parameters["@Valor_Retorno"].Value.ToString());
                if (valorRetorno == 1)
                    bandera = true;
                transaccion.Commit();

            }//fin del try
            catch (SqlException exc)
            {
                if (conexion != null)
                {
                    transaccion.Rollback();
                }
            }//fin del catch
            finally
            {
                if (conexion != null)
                {

                    conexion.Close();
                }
            }//finally

            return bandera;

        }//fin del metodo 

        public Administrador RecuperaAdm(String usuario, String contrasenna)
        {

            if (verificaAdministrador(usuario, contrasenna))
            {
                String sqlSelect = "Select * From Administrador Where usuario='" + usuario + "' and contrasenna='" + contrasenna + "'";
                this.conexion.ConnectionString = literalDeConexion;

                SqlCommand cmdRetornaAdm = new SqlCommand(sqlSelect, conexion);
                conexion.Open();
                SqlDataReader reader = cmdRetornaAdm.ExecuteReader();

                Administrador admRetorno = new Administrador();
                if (reader.Read())
                {
                    admRetorno.IdAdministrador = reader.GetInt32(0);
                    admRetorno.IdHotel = reader.GetInt32(1);
                    admRetorno.Nombre = reader.GetString(2);
                    admRetorno.Apellidos = reader.GetString(3);
                    admRetorno.Usuario = reader.GetString(4);
                    admRetorno.Contrasenna = reader.GetString(5);
                    admRetorno.IdImagen = reader.GetInt32(6);
                }

                return admRetorno;
            }//if

            return null;

        }//fin del metodo 
    }
}
